/*  This file is part of -_-.

    -_- is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    -_- is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with -_-.  If not, see <http://www.gnu.org/licenses/>.

    Copyright 2012-2013 Oliver Katz */

#include <iostream>
#include <stdio.h>

extern "C"
{
    #include "../common/data.h"
    #include "ipc.h"
}

#include <gtest/gtest.h>

using namespace std;

char *cname = NULL;

TEST(busClient, client)
{
    ASSERT_TRUE(cname != NULL);

    z_ipc_client cli = z_ipc_client_init_global((char *)"127.0.0.1", 8950);
    ASSERT_FALSE(z_ipc_client_connect(&cli));

    char buf[1024];
    sprintf(buf, "%s@%s:8950\n", cname, "127.0.0.1");
    z_data namedata = z_data_init(Z_TYPEID_STR, (strlen(buf)+1)*sizeof(char));
    z_data_src_set(&namedata, buf);

    ASSERT_FALSE(z_ipc_client_send_request(&cli, &namedata));
    z_data res = z_ipc_client_recieve_response(&cli);

    cout << "'" << (char *)res.src << "'\n";

    z_ipc_client_disconnect(&cli);
    z_ipc_client_release(cli);
}

int main(int argc, char *argv[])
{
    ::testing::InitGoogleTest(&argc, argv);

    if (argc <= 1)
    {
        cout << "usage: " << argv[0] << " <CLIENT NAME>\n";
        return 1;
    }

    cname = argv[1];

    return RUN_ALL_TESTS();
}
